//
//  GTFaceServiceProtocol.h
//  
//  提供人脸识别服务需要实现的协议
//  Created by 苏尚进 on 2022/3/21.
//  Copyright © 2022 moon. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

typedef enum : NSUInteger {
    GTFaceServiceLiveStepOpenEye=0,//眨眼
    GTFaceServiceLiveStepOpenMouse=2,//张嘴
    GTFaceServiceLiveStepShakeHead=3,//摇头
    GTFaceServiceLiveStepNod=6,//点头
} GTFaceServiceLiveStep;//动作

typedef enum : NSUInteger {
    GTFaceServiceLiveLevelNormal=0,//普通难度
    GTFaceServiceLiveLevelHard=1,//高难度
    GTFaceServiceLiveLevelCustom=2,//自定义
} GTFaceServiceLiveLevel;//难度，默认为0

NS_ASSUME_NONNULL_BEGIN

extern NSString *const kGTFaceServiceParamKeyOfLiveStep;//对应的值为GTFaceServiceLiveStep
extern NSString *const kGTFaceServiceParamKeyOfLiveLevel;//对应的值为GTFaceServiceLiveLevel

@protocol GTFaceServiceProtocol <NSObject>

/// 执行人脸识别，返回结果。主线程调用，以及主线程回调
/// @param sysNo 系统编号，如z00008（代表个人网银）
/// @param transNo 人脸业务流水号（关联了用户三要素）
/// @param bizCode 人脸业务代码
/// @param faceLiveParam 人脸识别参数，取什如：
/// @{
/// kGTFaceServiceParamKeyOfLiveStep:@[@(GTFaceServiceLiveStepOpenEye),@(GTFaceServiceLiveStepOpenMouse)],
//  kGTFaceServiceParamKeyOfLiveLevel:@(GTFaceServiceLiveLevelNormal),
///}
/// @param completion 完成回调，result为结果，faceImage为成功对应的人脸照片数据，error为失败时的错误信息。调用方需要根据人脸业务流水号，再做一次后台人脸识别结果的查询，防止前端人脸识别结果被中间人串改
- (void)gtFaceRecognitionWithSysNo:(NSString *)sysNo transNo:(NSString *)transNo bizCode:(NSString *)bizCode faceLiveParam:(nullable NSDictionary *)faceLiveParam completion:(void(^)(BOOL result,UIImage * __nullable faceImage,NSError * __nullable error))completion;
@end

NS_ASSUME_NONNULL_END
